
[dbo].[amsp_CMGetPublishedContentID]
CREATE PROCEDURE amsp_CMGetPublishedContentID
@InContentID numeric,
@OutContentID numeric OUTPUT,
@InFuseFlag Numeric = 0
AS
BEGIN
DECLARE
@MyWorkflowStatusCode char(1),
@ParentWorkflowStatusCode char(1),
@ChildWorkflowStatusCode char(1),
@ChildContentID numeric,
@ParentContentID numeric,
@Counter integer
SET @OutContentID = 0
SELECT @MyWorkflowStatusCode = a.WorkflowStatusCode,
@ParentContentID = a.PreviousContentID,
@ParentWorkflowStatusCode = c.WorkflowStatusCode,
@ChildContentID = b.ContentID,
@ChildWorkflowStatusCode = b.WorkflowStatusCode
FROM (Content a LEFT OUTER JOIN Content b ON a.ContentID = b.PreviousContentID)
LEFT OUTER JOIN Content c ON a.PreviousContentID = c.ContentID
WHERE a.ContentID = @InContentID
IF @MyWorkflowStatusCode = 'P' OR (@InFuseFlag = '1' AND @MyWorkflowStatusCode = 'A')
SET @OutContentID = @InContentID
ELSE
BEGIN
IF @ParentWorkflowStatusCode = 'P'
SET @OutContentID = @ParentContentID
ELSE
BEGIN
IF @ChildWorkflowStatusCode = 'P'
SET @OutContentID = @ChildContentID
ELSE BEGIN
SET @Counter = 0
WHILE (@ChildWorkflowStatusCode IS NOT NULL AND @OutContentID = 0 AND @Counter < 50) BEGIN
SET @Counter = @Counter + 1
SELECT @ChildWorkflowStatusCode = WorkflowStatusCode,
@ChildContentID = ContentID
FROM Content
WHERE PreviousContentID = @ChildContentID
IF (@@RowCount = 1) BEGIN
IF (@ChildWorkflowStatusCode = 'P') BEGIN
SET @OutContentID = @ChildContentID
END
END
END
END
END
END
END
GO
GRANT EXECUTE ON [dbo].[amsp_CMGetPublishedContentID] TO [IMIS]
GO